# 计算：pandas包 基于numpy包

import numpy as np
# 数组处理

#创建数组 array数据类型
a1=np.array([1,2,3,4,5])
print(a1)
print(type(a1))

#随机数
a2=np.random.randint(3,50,20) #从3到50的20个随机整数
print(a2)
a3=np.random.normal(50,20,10)
#按照正态分布(均值为50，方差为20)产生随机数
print(a3)

#生成序列
a4=np.arange(1,20,2)
#从1到20（不含）每隔1个取1个
print(a4)

#多维数组
a5=np.array([[1,2,3],[3,4,5]])#二维数组
print(a5)

#将一维数组变为3行2列
a6=np.array([5,6,7,8,9,10]).reshape(3,2)
print(a6)

a7=np.random.randint(3,50,(3,4))#从3到50的随机整数的3行4列数组
print(a7)

#特殊数组
e=np.empty(4) #4阶单位数组（方）
print(e)
em=np.empty((4,5)) #4*5的空数组（随机数）
print(em)
f=np.full((4,5),0) #4*5的数组，全都是0
print(f)

#索引和切片
a8=np.array([[1,2,3],[4,5,6],[7,8,9]])
print(a8[1][0],a8[1,0]) #4
print(a8[0,1:3],a8[0,1:]) #[2,3]
print(a8[1:3,1:3], a8[1:,1:])
print(a8[:2,-1]) #切出前两行，选中最后一个元素（索引）
print(a8[:2,-1:]) # 切出前两行和最后一行（）切片
print(a8[:2,::2])
print(a8[:2,::-2])# 负步数长代表从右往左

#花式索引
print(a8[[0,2],[1,2]])# 第一行第二列和嗲三行第三列的第二个元素
print(a8[0,2],2)

#布尔索引 真溜假扔
print(a1[[True,True,False,False,True]])
print(a1>=3) # 数组做判断 = 数组中每个元素做判断 = 同样长度的布尔数组
print(a1[a1>=3])

#数组计算、
# 数组与标量：每一个数都和标量计算
print(a1+5)

#数组与数组：对应位置计算
x1=np.array([[1,2],[3,4]])
x2=np.array([[4,5],[6,7]])
print(x1*x2)
x3=np.array([4,5])
print(x1+x3)

#变形
print(x1.T) # 轴对称

import matplotlib.pyplot as plt

img=plt.imread("1.jpg")
plt.imshow(img)
plt.show()
plt.imshow(img[::-1])
plt.show()
plt.imshow(img[:,::-1])
plt.show()
plt.imshow(img[:432])
plt.show()







